var Mock = require('mockjs');
var data = Mock.mock({
	'list|20-60':[{
		'id': '@increment()',
		'title': '@ctitle',
		'image': "@image('300x300', '#000000', '#FFFFFF', 'Mock.js')",
		'content': "@cparagraph",
		'add_time': "@date(yyyy-MM-dd hh:mm:ss)"
	}]
})

//向前端传递模拟数据
Mock.mock(/\/api\/get\/news/, 'get', (option) => {//option下的body是我们传递的参数内容，不传就为null
	/* get请求传递的参数会包含在url里(字符串)，需要一同通操作提出来 */
	var datalist = getPageData(option.url);
/* 	console.log(datalist.pageindex);
	console.log(datalist.pagessize); */
	const start = (datalist.pageindex-1)*datalist.pagessize;
	const end = datalist.pageindex*datalist.pagessize;
/* 	console.log(start);
	console.log(end); */
	const totalpages = Math.ceil(data.list.length/datalist.pagessize);
	const list = datalist.pageindex>totalpages?[]:data.list.slice(start,end);
	return {
		status: 200,
		message: '获取新闻列表成功',
		data: list, /* 传递对应页面对应的数据 */
		total: data.list.length /* total，总共有多少条数据 */
	}
})

function getPageData (url) {
	console.log(url);
	var stepone = url.substring(url.indexOf('?')+1).split('&');
	/* console.log(stepone); */
	return {
		pageindex: Number(stepone[0].substring(stepone[0].indexOf('=')+1)),
		pagessize: Number(stepone[1].substring(stepone[0].indexOf('=')+1))
	}
}

//删除数据 Mock.mock()接受的请求如果带参数，接口就要使用正则，没有参数直接把接口放在引号里
Mock.mock(/\/api\/del\/news/, 'post', (option) => {
	/* console.log(option); */
	/* post请求时传递的参数放在option.body里，以键值对存放在option.body，
	但一定要用JSON.parse()反序列化一下option.body */
	var body = JSON.parse(option.body);//
	/* console.log(body.id); */
	const index = data.list.findIndex(item => {//找到数据的index
		return item.id === body.id;
	});
	/* console.log(index); */
	data.list.splice(index,1);//删除数据
	return{//返回数据
		status: 200,
		message: '删除新闻数据成功',
		data: data.list
	}
	
})

//添加数据
Mock.mock(/\/api\/add\/news/, 'post', (option) => {
	var body = JSON.parse(option.body);
	if(body.title===''||body.content===''){
		alert('请输入完整的数据!');
		return;
	}
	/* console.log(body.title);
	console.log(body.content); */
	/* 添加数据 */
	data.list.unshift(Mock.mock({//一定要用Mock.mock()包住待插入的数据，即Mock.mock({...})
		'id': '@increment()',
		'title': body.title,
		'image': "@image('300x300', '#000000', '#FFFFFF', 'Mock.js')",
		'content': body.content,
		'add_time': "@date(yyyy-MM-dd hh:mm:ss)"		
	}));
	return{//返回数据
		status: 200,
		message: '添加新闻数据成功',
		data: data.list
	}
})